Wiederholung

Themen:

  • Assertionen (assertions)
  • Unit Testing
  • Javadoc Kommentare
  • Behandlung von Ausnahmen (exceptions)
  • Die Schnittstellen Comparator und Comparable
  • Wdh: Wachstumsordnungen
  • Empirische und Analytische Laufzeitanalyse
  • Praktische Bestimmung von Laufzeitkomplexität
  • Laufzeit von Java Collections
  • Vorrangwarteschlange (priority queue, Prioritätenwarteschlange)
  • indizierte Vorrangewarteschlange

Schlüsselwörter – Lösung

Was bedeuten die folgenden Begriffe?

  • static: Funktion ohne Erstellung eines Objekts aufrufbar.
  • this (in Bezug auf Variablen): Die Attribute des Objekts.
  • extends: Die Klasse erbt von einer Superklasse.

截屏2024-05-04 14.08.01.png

Vererbung – Polymorphie

  • Objekte einer Klasse können auch als Objekte der Superklasse behandelt werden
  • Objekte gleicher Superklasse können so z.B. in einem Array zusammen gespeichert werden
    截屏2024-05-04 14.09.41.png

Interfaces

  • enthält nur Methodenköpfe
  • wird ein Interface von einer Klasse implementiert, muss diese auch die Methoden des Interfaces implementieren
  • „Vererbung“ von mehreren „Klassen“

截屏2024-05-04 14.11.57.png
截屏2024-05-04 14.12.08.png

Abstrakte Klassen

  • im Gegensatz zu Interfaces Vererbung (von Attributen und Methoden) möglich
  • zu implementierende Funktionen werden mit dem Stichwort abstract gekennzeichnet und sind (wie bei Interfaces) nur Funktionsköpfe
  • wenn eine Klasse von einer abstrakten Klasse erbt, muss diese auch die abstrakten Funktionen der Superklasse implementieren

截屏2024-05-04 14.13.47.png
截屏2024-05-04 14.14.02.png
截屏2024-05-04 14.16.16.png
截屏2024-05-04 14.16.27.png
截屏2024-05-04 14.16.49.png
截屏2024-05-04 15.03.36.png

Generics

• wenn noch unbekannt, welchen Datentyp ein Objekt hat

Arrays, Listen, Queues, Stacks

Arrays

• zusammenhängende Felder im Speicher

Vorteil:
• benötigen für Zugriffe keine komplexeren Funktionen

Nachteil:
• haben feste Größen und Positionen

截屏2024-05-04 14.43.52.png
截屏2024-05-04 14.48.00.png
截屏2024-05-04 14.48.19.png
截屏2024-05-04 14.48.35.png
截屏2024-05-04 14.49.03.png

Listen

• Verkettung von Objekten mithilfe einer komplexen Datenstruktur

Vorteil:
• Länge und Positionen sind variabel

Nachteil:
• Zugriffe benötigen immer vordefinierte Funktionen

Listen – Arten

• LinkedList: verkettete Liste
• ArrayList: Liste mit Array-Indizes
• Queue: siehe spätere Folien
• Stack: siehe spätere Folien

截屏2024-05-04 14.50.46.png
截屏2024-05-04 14.53.17.png
截屏2024-05-04 14.53.30.png
截屏2024-05-04 14.53.49.png

Queue

FIFO (First In First Out)
• Elemente die zuerst eingefügt werden, werden auch als erstes wieder heraus genommen
Funktionen:
• offer: Element wird hinzugefügt
• poll: Element wird heraus genommen

截屏2024-05-04 14.55.24.png

截屏2024-05-04 14.55.42.png

Stack

FILO (First In Last Out)
• Elemente die zuerst eingefügt werden, werden als letztes wieder heraus genommen

Funktionen:
• push: Element wird hinzugefügt
• pop: Element wird heraus genommen
截屏2024-05-04 14.57.04.png
截屏2024-05-04 14.57.14.png

Hausaufgabenblatt 02

截屏2024-05-04 20.20.32.png
截屏2024-05-04 20.26.17.png

Aufgabe5

截屏2024-05-05 00.43.10.png

Aufgabe 1: Laufzeit - Grundlagen

  1. Die Laufzeiten von Schritten, die nacheinander ausgeführt werden, werden addiert.
  2. Die Laufzeiten von Schritten, die in einer Schleife ausgeführt werden, werden mit der Komplexität der Schleife multipliziert.
  3. Wenn ein Problem in jedem Schritt doppelt so groß wird, ist die Laufzeit exponentiell.
  4. Wenn ein Problem sich exponentiell schnell seiner Abbruchbedingung nähert, ist die Laufzeit logarithmisch.
  5. Konstanten werden bei der Angabe der Komplexität weggelassen.
    截屏2024-05-05 00.49.21.png
    截屏2024-05-05 00.48.59.png
    截屏2024-05-05 00.49.31.png
    截屏2024-05-05 00.54.20.png
    截屏2024-05-05 00.54.42.png
    截屏2024-05-05 00.56.51.png
    截屏2024-05-05 00.58.02.png